
import Vue from "vue";


//vuex是vue的状态管理工具，使用集中式管理数据。
import Vuex from "vuex";
Vue.use(Vuex);
import axios from "axios";
Vuex.Store.prototype.http=axios;

//创建仓库对象。仓库对象是整个应用的数据（状态）管理中心。
var store = new Vuex.Store({
  //state，数据仓库中的数据和它的初始值。
  state: {
    cut:true,
    data:{
      data:{
        username: "",
        nickname: "",
        email: "",
        homepage: "",
        weibo: "",
        jieshao: "",
        a:false
      },
      
    },
    a:false,
    data1:[],
    title:[],
    details:{data:{dara:{tiele:"",content:"",sellid:""}}},
    detailsuser:{data:{data:{nickname:"",name:""}}},
    hflb:{data:{data:{}}},
    fenqu:{},
    remind:{},
    
  },
  //对于仓库中的一些数据，有时不希望直接使用，而是使用它的一些衍生值，那么可以写成一个getter，类似于组件的computed。
  getters: {
    
  },
  //mutations，对于store中state数据的修改，不建议直接在组件中修改state的属性。而是在store中添加一些数据修改方法mutations，然后组件中提交mutation来修改数据。(类似组件的methods)
  mutations: {
    // 更改页面组件
   cut:function(state,value){
     state.cut = value
    //  console.log(state.cut)
   },
  //  请求数据
    newdata:function(state,value){
      state.data = value
    },

    request:function(state,value){
      state.data1 = value
    },
    // 请求列表
    requesttitle:function(state,value){
      state.title = value
    },
    details:function(state,value){
      state.details = value
    },
    detailsuser:function(state,value){
      state.detailsuser =value
    },
    a2:function(state,value){
      state.a =value
    },
    hflb:function(state,value){
      state.hflb = value
    },
    // 请求分区数据
    fenqu:function(state,value){
      state.fenqu = value
    },
    // 请求消息列表
    remind:function(state,value){
      state.remind = value
    }
    
  },
  //mutation只用于同步的数据修改，异步的数据修改（例如网络请求的数据）需要使用actions。
  actions:{
    regist : function (state,data) {
      this.http.post("/api/users/regist",data)
      .then(res=>{
        if(res.data.err==1){
            alert(res.data.msg);
            alert("err")
        }else if(res.data.err==0){
            alert(res.data.msg);
            window.location.href = "/#"
            // alert("ok")
        }
      })
    },
    login : function(state,data) {
      this.http.post("/api/users/login",data)
      .then(res=>{
        if(res.data.err==0){
          window.location.href="http://127.0.0.1:8080/#"
          alert("登陆成功")
          // console.log(res.data.msg)
        }
      })
    },
    // 判断是否登录
    isLogin:function(state,data){
       this.http.get("/api/users/islogin")
      .then(res=>{
        // console.log(res.data)
        if(res.data.err==0){
          state.commit("cut",false);
           state.commit("a2",true);
          // state.commit("userMessage2",res.data.data);
        }else{
           state.commit("a2",false);
          // state.commit("meLonginShow2",true);
        }
      });
    },
    // 退出登录
    exit:function(state,data){
      this.http.get("/api/users/exit")
      .then(res=>{
        alert("退出成功");
        // state.commit("cut",true);
        this.$store.dispatch("updata");
        this.$store.dispatch("isLogin");
        window.location.href = "http://127.0.0.1:8080/#/";
      })
    },
    // 请求数据
    updata:function(state,data){
      this.http.get("/api/users/updata")
      .then(res=>{
        // console.log(res.data);
        state.commit("newdata",(res.data));
        // if(res.data.err==1){
        //   state.commit("a2",false);
        // }else{
        //   state.commit("a2",true);
        // }
      })
    },
    // 添加数据
    tianjia:function(state,data){
      this.http.post("/api/users/tianjia",data)
      .then(res=>{
        if(res.data.err==0){
          alert("修改成功")
        }
      })
    },
    // 上传头像
    avatarimg:function(state,data){
      var datas = new FormData();
      datas.append("avatar",data);
      this.http({
        method:"post",
        url:"/api/users/avatar",
        data:datas,
        headers:{'Content-Type':"multipart/form-data"},
      })
      .then(res=>{
        // console.log(res.data)
          // layer.msg(res.data.msg);
          // window.location.href = "http://127.0.0.1:8080/#/me"
      })
    },
    // 请求话题列表数据
    request:function(state,data){
      this.http.post("/api/com/request")
      .then(res=>{
        // console.log(res.data);
        state.commit("request",res.data.data);
      })
    },
    // 发表话题
    publish:function(state,data){
      this.http.post("/api/com/pubilsh",data)
      .then(res=>{
        // console.log(res.data)
        if(res.data.err==0){
          alert("发表成功")
        }else{
          alert("发表失败")
        }
      })
    },
    // 请求标题数据
    requesttitle:function(state,data){
      this.http.post("/api/com/requesttitle")
      .then(res=>{
        // console.dir(res.data.data)
        state.commit("requesttitle",res.data.data)
      })
    },
    // 请求数据------
    details:function(state,id){
      this.http.post("/api/com/details",{_id:id})
      .then(data=>{
        state.commit("details",data);
        // console.log(data)
        window.location.href="http://127.0.0.1:8080/#details/"+id;
      })
    },
    // 作者
    detailsuser:function(state,data){
      this.http.post("/api/users/details",{_id:data})
      .then(data=>{
        state.commit("detailsuser",data);
        // console.log(data)
      })
      
    },
    // 回复
    huifu:function(state,data){
      this.http.post("/api/com/huifu",data)
      .then(res=>{
        if(res.data.err==0){
          alert("发表成功")
          return;
        }else{
          alert("发表失败")
        }
      })
    },
    // 请求回复列表
    hflb:function(state,data){
      this.http.post("/api/com/hflb",{data})
      .then(data=>{
        state.commit("hflb",data)
        // console.log(data.data)
      })
    },
    // 分区查询
    fenqu:function(state,data){
      // console.log(data)
      this.http.post("/api/com/fenqu",{data})
      .then(data=>{
        state.commit("fenqu",data)
      })
    },
    // 请求消息
    remind:function(state,data){
      this.http.post("/api/com/remind")
      .then(data=>{
        state.commit("remind",data.data)
        console.log(data)
      })
    },
    // 清除消息
    dumpremind:function(state,data){
      this.http.post("/api/com/dumpremind")
      .then(data=>{
        // state.commit("remind",data.data)
        // console.log(data)
      })
    },
    // 点击喜欢
    likebtn:function(state,data){
      console.log(data)
      this.http.post("api/com/likebtn",{data})
      .then(data=>{
        
      })
    }


  }
})


export default store;